docs(release): add release system plan - #39
Merged
Conversation
- Update version to 1.0.0 - Add CHANGELOG.md with release notes - Consume changeset for v1.0.0 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Uses softprops/action-gh-release to create release with CHANGELOG notes. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Create initial documentation structure with 13 MDX pages covering: - Getting started and installation - Error factory and instance concepts - Exception chaining with from() and causes() - Single and multiple inheritance - Type checking with is() - Message templates - API reference - Practical recipes Structure managed via meta.json with navigation sections. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.ai/claude-code)
Specify build command, output directory, and install command to work with Vercel using repo root as root directory. 🤖 Generated with [Claude Code](https://claude.ai/claude-code)
🤖 Generated with [Claude Code](https://claude.ai/claude-code)
🤖 Generated with [Claude Code](https://claude.ai/claude-code)
🤖 Generated with [Claude Code](https://claude.ai/claude-code)
Use title="filename" format for code block headers 🤖 Generated with [Claude Code](https://claude.ai/claude-code)
docs: first draft of documentation site
Install @vercel/analytics and add Analytics component to layout 🤖 Generated with [Claude Code](https://claude.ai/claude-code)
🤖 Generated with [Claude Code](https://claude.ai/claude-code)
docs: add Vercel Analytics
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Hero section with blueprint grid background - Navigation bar with logo and GitHub link - Code showcase with file header - Features grid (4 main + 3 secondary + CTA) - Before/after comparison section - Install section with npm commands - Footer with branding - Uses Inter font (Geist pending Next.js support) - rounded-none throughout per design system Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace all hardcoded Tailwind colors (gray-950, bg-white, etc.) with FumaDocs theme CSS variables (bg-fd-primary, text-fd-foreground, etc.) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Use shiki for syntax highlighting on code blocks with dual light/dark theme support (github-light, github-dark). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Shiki now removes inline background-color from pre element so it inherits from theme CSS variables (bg-fd-background). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Uses codeToHtml from shiki directly - Adds terminal-style header with colored dots - title is optional - removes old highlight.ts Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Configure blog collection in source.config.ts - Create blog listing page with post grid - Create individual blog post page with Article JSON-LD - Add share button component - Create RSS feed at /blog/rss.xml - Add blog OG images at /og/blog/[slug] - Update sitemap to include blog routes - Add RSS link to layout head - Write first blog post: "Getting Started with @deessejs/errors" - Install feed package for RSS generation Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add Blog link to the navigation bar using Fumadocs links prop with BookIcon and nested-url active mode. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Only show icon-type links (like GitHub) in the docs sidebar. Text links like Blog are shown in navbar only. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add Docs link with FileTextIcon alongside Blog link in navbar. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add ExternalLinkIcon with external indicator for deessejs.com. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
feat: add blog system with SEO optimization
Drop the Flue agent-harness runtime that was wired up for GitHub issue triage — the project no longer needs a self-hosted agent workflow. Removed: - .flue/ (Hono server + triage workflow) - flue.config.ts (Flue build config) - .github/workflows/issue-triage.yml (CI trigger) - .agents/skills/triage/ (Flue-backed skill; Claude Code triage skill kept) - .claude/agents/flue-expert/ (Claude Code agent) - .claude/agent-memory/flue-expert/ (agent memory) - temp/flue-triage-plan.md Deps: dropped @flue/cli, @flue/runtime, hono, valibot (hono and valibot were only used by the Flue workflow). Cleanup: - .claude/skills/triage/SKILL.md: sign-off attribution updated from 'Flue Agent + MiniMax M2.7' to 'Tech Lead Agent'. - DESIGN.md: removed Flue Framework design-inspiration references. Co-Authored-By: Claude <noreply@anthropic.com>
chore: remove Flue framework
Adds prettier@^3.9.5 as a direct devDep and reformats the project with the existing .prettierrc config (semi, singleQuote, tabWidth 2, trailingComma es5, printWidth 100). Adds temp/ to .prettierignore so reference repos and temp docs are not checked. This is the natural consequence of adding 'pnpm format:check' to the lint CI workflow — without a clean baseline the new step would fail on every PR. Co-Authored-By: Claude <noreply@anthropic.com>
- Bump packageManager from pnpm@10.30.3 to pnpm@10.34.5 — patches CVE-2026-50016 (CVSS 8.8, symlink path-traversal bypassing --ignore-scripts) - Add prettier@^3.9.5 as a direct devDep (was previously transitive from @changesets/cli, locking us to an old 2.8.8) - Add lint-staged@^17.0.0 - apps/web: add 'lint' script (was previously skipped by turbo lint) - apps/web: declare eslint + @eslint/js as devDeps (future-proofs against shamefully-hoist removal) Co-Authored-By: Claude <noreply@anthropic.com>
- release.yml: enable npm Trusted Publishing (OIDC) via id-token: write permission; remove the Configure npm / NPM_TOKEN step. Manual action required on npmjs.com before the next release — register a Trusted Publisher for workflow release.yml. - release.yml: limit release trigger to PRs targeting main; tighten 'if' to require base.ref == 'main'; checkout main explicitly (was detached PR ref, which would have failed on 'git push HEAD'). - lint.yml: add 'pnpm format:check' step. Co-Authored-By: Claude <noreply@anthropic.com>
- Replace .husky/pre-commit body with 'pnpm exec lint-staged'. - Drop the legacy '#!/usr/bin/env sh' + '. "$(dirname "$0")/_/husky.sh"' shim lines for Husky v10 readiness. - Add .lintstagedrc.json (eslint --fix + prettier --write on code files; prettier --write on docs/config). - Drop shamefully-hoist=true and legacy-peer-deps=true from .npmrc. apps/web (Next.js) builds verified clean without them. - Extend .prettierignore with temp/. Known follow-up: lint-staged config needs per-workspace eslint invocations or a root eslint.config.js (currently fails for some file types because ESLint 9 flat-config requires the config in the cwd). Tracked separately. Co-Authored-By: Claude <noreply@anthropic.com>
CI fail fix. The apps/web source.config.ts (and the generated .source/source.config.mjs loaded by 'next typegen') imports 'zod' directly, but zod was previously only resolvable via shamefully-hoist=true, which made pnpm hoist transitive deps to the root node_modules. Removing shamefully-hoist=true (commit 929d862) exposed this hidden dep: on a fresh install (CI), pnpm's strict isolation hides zod from apps/web because it's only declared as a transitive dep of fumadocs-mdx. Local 'pnpm install' had succeeded because the local node_modules already contained hoisted zod from the pre-Tier 2 state. Add zod@^4.4.3 to apps/web's dependencies to make the import explicit. Co-Authored-By: Claude <noreply@anthropic.com>
Two follow-up issues surfaced by CI on the Tier 1+2 hardening PR: 1. apps/web/src/components/code-block.tsx imports 'shiki' directly, but shiki was only resolvable via shamefully-hoist=true (Tier 2 #17 removed that flag). Same pattern as the earlier zod fix (commit 65a4264). Add shiki@^4.3.1 as an explicit dep of apps/web. 2. pnpm format:check in CI was failing on: - .claude/** (agent tooling metadata, not project source) - apps/web/.source/** (generated by fumadocs-mdx) - apps/web/next-env.d.ts (generated by Next.js) - docs/learnings/** (internal learning docs, formatted manually) Extend .prettierignore to exclude these paths. Co-Authored-By: Claude <noreply@anthropic.com>
…ening chore: Tier 1+2 toolchain hardening (CVE-2026-50016, Node 22, lint-staged, Trusted Publishing)
Proposes a documented release system plan for @deessejs/errors. The plan is grounded in a Phase 0 inventory of the current pipeline (Changesets + 'version bump' label + cherry-pick PRs from staging to main) and lists six implementation phases to harden the workflow. No code, no workflow changes, no tag changes in this commit.
This was referenced Aug 3, 2026
martyy-code
added a commit
that referenced
this pull request
Aug 4, 2026
…stacked-PR learnings Three process docs under docs/internal/engineering/process/, each tuned to a persona: - implementing-an-issue.md — dev's playbook (read issue, branch, code, changesets, push, PR). Companion for anyone picking up an issue. - releasing-a-new-version.md — release engineer's playbook (build the release branch, cherry-pick, push, watch the workflow, verify artifacts). Mirrors the conventions we hardened in PRs #39-47. - pr-authoring.md — standards for the body of a PR (six canonical sections, mandatory code sample when public API changes, before/after default, after-only when purely additive). Enforces what PR #50 demonstrated: documented the .addNote() worked-example as the in-doc template. Also adds docs/learnings/github/stacked-pr/README.md, notes captured during PR #39-43 setup around how stacked PRs work in GitHub and how they apply to a release branch. No code, no workflow changes. Documentation only.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a written plan for the release system of
@deessejs/errors. The plan is based on a Phase 0 inventory of the current pipeline and replaces the previously undocumented process with a concrete, reviewable spec.What is in this PR
docs/internal/engineering/plans/release-system.md— the plan itselfWhat is NOT in this PR
The plan documents the current pipeline (Changesets + label
version bumpon PRs tomain+ cherry-pick releases fromstaging) and proposes a clearer rewrite of the GitHub Actions workflow plus a CI lint for changesets on PRs tostaging. It also flags accidental drift betweenCLAUDE.md/CONTRIBUTING.mdand the actual workflow.Open questions
All four open questions are resolved in the document:
release/hotfix-<slug>frommain.Next steps
Once this plan is merged into
staging, the implementation phases can begin (Phase 0 inventory done, Phase 1 to Phase 6 in the plan body).Checklist
stagingper the project's release flow🤖 Generated with Claude Code